AWS ParallelCluster 3.6.0 で追加されたコンピュートノードの詳細モニタリング有効化を確認してみた
AWS ParallelCluster 3.6.0 で追加された新機能を個別に確認します。本ブログではコンピュートノードに対して詳細モニタリングを有効化できるようになったアップデートを確認します。
確認結果
- 詳細モニタリングを有効化すると 1 分単位でコンピュートノードのメトリクスを取得
- クラスターのコンフィグは1行追加するだけで設定可能
- コンフィグで設定未指定時のデフォルト動作は詳細モニタリング無効
- クラスター作成後、有効化・無効化の設定変更は可能
Monitoring: Logs: CloudWatch: Enabled: true DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: true DetailedMonitoring: true
検証環境
- AWS ParallelCluster のバージョンは
3.6.0
を使用 - OS は
RHEL8
を使用
検証用に構築したクラスターのコンフィグを参考までに載せておきます。
折りたたみ
Region: ap-northeast-1 Image: Os: rhel8 Tags: - Key: Name Value: ParallelCluster360 # ---------------------------------------------------------------- # Head Node Settings # ---------------------------------------------------------------- HeadNode: InstanceType: t3.micro Networking: ElasticIp: false SubnetId: subnet-035be95eeaa091603 Ssh: KeyName: sandbox-key LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Compute Node Settings # ---------------------------------------------------------------- Scheduling: Scheduler: slurm SlurmSettings: ScaledownIdletime: 5 SlurmQueues: # ------ Compute 1 ------ - Name: queue1 ComputeResources: - Name: queue1 Instances: - InstanceType: c6i.large MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: true ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT AllocationStrategy: lowest-price Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: true Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Shared Storage Settings # ---------------------------------------------------------------- SharedStorage: - MountDir: /mnt/efs-1zone Name: efs-1zone StorageType: Efs EfsSettings: FileSystemId: fs-0f1158ade79354809 # ---------------------------------------------------------------- # Other Settings # ---------------------------------------------------------------- Monitoring: Logs: CloudWatch: Enabled: true # RetentionInDays: 30 DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: true DetailedMonitoring: true
詳細モニタリングを有効化
コンピュートノードのインスタンスに対して詳細モニタリングを有効化できるDetailedMonitoring
が追加されました。
ユーザーガイド(Monitoring section - AWS ParallelCluster)を参考にDetailedMonitoring
の要点をまとめます。
- 1 分単位でコンピュートノードのメトリクスを取得
- コンフィグで未指定時のデフォルト動作は
false
となり、詳細モニタリングは無効化 - クラスター作成後、有効化・無効化の設定変更は可能
クラスターコンフィグの指定方法
Monitoring
セクション内でDetailedMonitoring: true
と記述するだけです。
Monitoring: Logs: CloudWatch: Enabled: true DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: true DetailedMonitoring: true
クラスター(EC2)の設定値を確認
ヘッドノードと、コンピュートノードの詳細モニタリングの設定値を確認します。
コンピュートノード
詳細モニタリングが有効化されています。ジョブを投げて起動させたコンピュートノードの設定値を確認しました。
ヘッドノード
詳細モニタリングは有効化されていません。ヘッドノードは設定の対象外なので想定通りです。
ユースケース
ワークロードに応じたコンピュートノードの最適化(インスタンスタイプ・サイズの選定)のために詳細モニタリングは有効です。とくに CPU 使用率は 1 分単位で確認できるようになるのは利用価値が高いです。最適化後は詳細モニタリングを無効に戻すことで不必要なコストも発生しません。
ただし、コンピュートノードのメモリ使用率は CloudWatch Agent を導入して別途カスタムメトリクスを取得しないとできないです。メモリ量も最適化しようと思うと少し手間になりますね。
補足
ヘッドノードはメモリ使用率をデフォルトで取得してくれます。
コンピュートノードのメトリクス一覧
参考までにc6i.large
で取得できていたメトリクス一覧です。
まとめ
ParallelCluster 3.6.0 で追加された詳細モニタリングの考慮事項です。
- 1 分単位でコンピュートノードのメトリクスを取得
- クラスターのコンフィグは1行追加するだけで設定可能
- コンフィグで設定未指定時のデフォルト動作は詳細モニタリング無効
- クラスター作成後、有効化・無効化の設定変更は可能
おわりに
地味なアップデートですがコンピュートノードの最適化のときには役に立つので良いアップデートでした。従来であれば簡単な方法でもカスタムスクリプトで起動してきたコンピュートノードのインスタンス ID を引いて、AWS CLI から詳細モニタリングを有効化するが必要になるはずです。コンピュートノードの IAM ロールに EC2 設定変更の権限を与えないといけなかったりとなかなか手間になりますね。手間なのでやったことはありませんでした。